[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
             ASSUMPTIONS AND LINGO USED BY TCHK

    MULTIPLE ENTRY #defines

        In the interactive environment you can #define one item in
        terms of another, including spaces. If anyone knows how to do
        this with the command line version, please let me know. The
        variable type  byte  is just an unsigned char. If you use the
        command line version of TC you will have to change some of
        the header files of TCHK.

    COORDINATES

        Beginning with TCHK 2.0, unless otherwise noted, all
        functions asking for screen coordinates comply with Borland's
        format (x,y). The top left corner of the screen is (1,1).
        This is highly different from previous versions of TCHK.

    LOW MEMORY ADDRESSES

        Many functions rely on interrupts and low memory addresses
        (400:xxxx) to comply  with the IBM standard. Certain values
        (for instance, the current video page) can be found by an
        interrupt or by peeking at the value stored in low memory.
        Many of the video functions especially require these values
        to be found at the proper places. If your clone is radically
        different from the IBM standard some of these functions may
        not work properly. I didn't want to have to write a million
        small functions that are just background support for the
        functions found here (like current page number, etc.) so I
        used the #defines found in the headers (see video.h for more
        details.)

    KEYBOARD INPUT

        TCHK considers "key codes", "scan codes" and "ascii codes" as
        different animals. Via the BIOS, any key pressed returns a
        word (2-byte) value. If a 'normal' key is pressed (i.e. a
        letter, space, etc.) the low order byte contains the letter.
        When the low order byte is zero, an unusual key has been
        pressed (i.e. Alt combinations, arrows, grey +, etc.) This 2
        byte word as returned by the BIOS is called a scan code. For
        ease of use, several functions convert this "scan code" to a
        value from 0-511, called a "key code", where 0-255 are
        'normal' ascii codes, as per the IBM ASCII character set, and
        256-511 are the unusual keys. Many of the popular key codes
        are listed in KEYCODE.H. To determine a key code, if the low
        order byte is zero, take the high order byte as a number
        0-255 and add 256. If the low order byte is non-zero, take
        the low order byte as a number from 0-255. Note that although
        the regular plus key and the grey plus key (on the numeric
        keypad) return different scan codes, their key code is the
        same. So, briefly, an "ascii code" is a char (value of
        0-255), a "scan code" is a 2-byte word returned from the
        BIOS, and a "key code" is a value 0-511. "Scan codes" and
        "key codes" are both 2 bytes long (unsigned int and int,
        respectively).

    FILE NAMES

        There are several functions that refer to a DOS file name. A
        'file name' is a generic term for any possible name for a
        file (drive, path and even filename.ext are optional). A
        'filename' refers to a DOS filename.ext, no drive or path
        (sometimes referred to with 'filename.ext'). A 'filepathname'
        refers to a full file name, including drive, path and
        filename.ext (some parts may be optional.) A 'filespec' is
        similiar to a 'filename', but does not necessarily refer to a
        specific file (i.e. D:\TURBOC is actually D:\TURBOC\*.*. See
        how DIR parses filespecs for more details.)

    MDA/HERCULES VIDEO CARDS

        TCHK has not been tested on a Hercules or MDA video card
        since I do not have access to either piece of hardware,
        although the methods I used are well documented and should
        cause no problems.

    TCHK SCREEN OUTPUT

        All functions that use my direct screen access routines have
        built-in snow control. On CGA monitors, the snow was
        horrendous without it. Unless I code these routines in
        assembler, I won't be able to squeeze any more optimization
        out of these routines. Since Borland now provides acceptable
        console i/o functions, I doubt I shall bother to recode these
        in Assembler.

See Also: inkey() parsefilename() putk() putstr()
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson